#ifndef _DOG
#define _DOG

#include<string>
#include<iostream>
#include<fstream>
#include "AppError.h"
#include "Pet.h"
#include "IOMgmt.h"

using namespace std;
using namespace IOMgmt;

class Dog: Pet
{
  private:  //data members
//             string sex;
//             string name;
//             string dna;
            // ifstream& fin;       //saves the iostream so I can use it later wen Perform-Mate is called


  public:  //methods
           Dog();                                                               //Default constructor
           Dog( string Sex, string Name, string Dna)throw (AppError);                           //Parametric constructor
           void Perform( string cmd, ostream& fout)throw (AppError);            //
           void Perform( string cmd, ostream& fout, Dog& B)throw (AppError);     //
           void Extract( ifstream& fin)throw (TokenError);                      //Extractor
           void Insert( ostream& fout);                                         //Insertor
           string Bark();
           Dog Mate( Dog B) throw (AppError);
  protected:
            void Get(ifstream& fin)throw (TokenError);
            void Put(ostream& fout)throw (TokenError);
           // void Breed(Dog& B)throw (AppError);
//            string MyNameIs();
//            string MySpeciesIs();
//            string MySexIs();

};
# endif   //DOG.h

